package hello.scala.higher.fun

object HigherFunExample {

  /**
   *
   * mulBy函数接收一个Double类型的参数factor,
   * 返回一个参数为x:Double函数体为factor*x的函数
   */
  def mulBy(factor: Double) = (x: Double) => factor * x

  def main(args: Array[String]) {
    
    val fun=mulBy(5); //返回函数(x:Double)=>5*x
    
    val result=fun(20);//返回5*20.0的结果
    
    println(result);
    
    // 下划线"_"代表遍历时的元素对象
    val map=(1 to 9).map(0.1F * _);
    
    println(map);
    
    //打印三角形
    (1 to 9).map("*" * _).foreach(println _);
    
    //filter方法匹配某个特定条件的元素
    val evenNumber=(1 to 9).filter(_%2==0);
    println(evenNumber);
    
    (1 to 9).reduceLeft(_ * _); //等同于((1*2)*3)*...*9)
    
    //按长度递增排序
    val sortArray="Mary has a little lib".split(" ").sortWith(_.length() < _.length());
    
    for(i <- 0 until sortArray.length) println(sortArray(i));
    
    
    
  }
}